﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Common;
using System.Data;
using SisVendas.Entidades;
using SisVendas.Constants;
using MySql.Data.MySqlClient;

namespace SisVendas.DataAccess
{
    public class FornecedorDAO
    {
        public static DataBaseHelper db = new DataBaseHelper();

        public static void Inserir(Fornecedor f)
        {
            string query = DatabaseConstants.SPName.InserirFornecedor;
            List<MySqlParameter> parametros = new List<MySqlParameter>();

            parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.Bairro, f.Bairro));
            parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.Celular, f.Celular));
            parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.Cep, f.CEP));
            parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.Cidade, f.Cidade));
            parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.Email, f.Email));
            parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.Endereco, f.Endereco));
            parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.Estado, f.Estado));
            parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.Nome, f.Nome));
            parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.Telefone1, f.Telefone1));
            parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.Telefone2, f.Telefone2));
            

            db.ExecuteNonQuery(query, CommandType.StoredProcedure, parametros.ToArray());

        }



        public static void Excluir(Fornecedor f)
        {
            List<MySqlParameter> parametros = new List<MySqlParameter>();
            parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.IdFornecedor, f.ID));

            db.ExecuteNonQuery(DatabaseConstants.SPName.ExcluirFornecedor, parametros.ToArray());
        }

        private static void AssociarCategoria(Fornecedor f)
        {
            List<MySqlParameter> parametros = new List<MySqlParameter>();

            foreach (Categoria c in f.Categorias)
            {
                parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.IdCategoria, c.ID));
                parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.IdFornecedor, f.ID));

                db.ExecuteNonQuery(DatabaseConstants.SPName.InserirFornCategoria, parametros.ToArray());

                parametros.Clear();

            }

        }

        private static void ExcluirCategoria(Fornecedor f)
        {

            List<MySqlParameter> parametros = new List<MySqlParameter>();

            foreach (Categoria c in f.Categorias)
            {
                parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.IdCategoria, c.ID));
                parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.IdFornecedor, f.ID));

                db.ExecuteNonQuery(DatabaseConstants.SPName.ExcluirFornCategoria, parametros.ToArray());

                parametros.Clear();

            }

        }

        public static void Atualizar(Fornecedor f)
        {
            string query = DatabaseConstants.SPName.AtualizarFornecedor;
            List<MySqlParameter> parametros = new List<MySqlParameter>();

            parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.Bairro, f.Bairro));
            parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.Celular, f.Celular));
            parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.Cep, f.CEP));
            parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.Cidade, f.Cidade));
            parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.Email, f.Email));
            parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.Endereco, f.Endereco));
            parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.Estado, f.Estado));
            parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.Nome, f.Nome));
            parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.Telefone1, f.Telefone1));
            parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.Telefone2, f.Telefone2));
            parametros.Add(new MySqlParameter(DatabaseConstants.Parametros.IdFornecedor, f.ID));


            db.ExecuteNonQuery(query, CommandType.StoredProcedure, parametros.ToArray());


        }

    }
}
